home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / vericard.bas < prev    next >
BASIC Source File  |  1990-08-26  |  1KB  |  55 lines

  1. 'The following routine uses a checksum algorithm to verify credit card #'s:
  2. 'QuickBASIC translation done by Public (software) Library, 713-524-6394,
  3. 'from a Turbo Pascal routine done by
  4. '
  5. 'Daniel J. Karnes
  6. '1 Baron Park #20
  7. 'Burlington, MA 01803
  8. '
  9. 'CIS: 71240,3407
  10. '
  11. 'Karnes requested $5 for the use of the compiled program, but didn't mention
  12. 'the use of the code, though he refers to it as public domain and the
  13. 'checksum algorithm is widely known.
  14.  
  15.  
  16. C$=""
  17. DIM CCtype$(3)
  18. CCtype$(1) = "American Express"
  19. CCtype$(2) = "Visa"
  20. CCtype$(3) = "MasterCard"
  21. CCtype$(4) = "Discover"
  22.  
  23. INPUT "Enter Credit Card #: "; CC$
  24. FOR i = 1 TO LEN(CC$)
  25.   x$ = MID$(CC$, I, 1)
  26.   IF x$ => 0 AND x$ <= 9 THEN C$ = C$ + x$
  27. NEXT
  28.  
  29. n = LEN(C$)
  30. IF n/2 = n\2 THEN
  31.   FOR I = I TO 1 STEP -1
  32.     X=ASC(MID$(C$,I,1))
  33.     IF I\2 <> I/2 THEN Y = (X-48)*2 ELSE Y = (X-48)
  34.     IF Y>=10 THEN Y = Y - 9
  35.     XCARD = XCARD + Y
  36.   NEXT
  37. ELSE
  38.   FOR I = LEN(C$) TO 1 STEP -1
  39.     X = ASC(MID$(C$,I,1))
  40.     IF I\2 <> I/2 THEN Y = (X-48) ELSE Y = (X-48)*2
  41.     IF Y>=10 THEN Y = Y - 9
  42.     XCARD = XCARD + Y
  43.   NEXT
  44. END IF
  45. X = 10 - (XCARD MOD 10)
  46. IF X = 10 THEN X = 0
  47.  
  48. t = VAL(LEFT$(C$, 1))
  49. IF t => 3 AND t <= 6 THEN
  50.   PRINT CCtype$(t-2) " checksum ";
  51.   IF X = 0 THEN PRINT "good" ELSE PRINT "bad"
  52. ELSE
  53.   PRINT "Unrecognized Card"
  54. END IF
  55.